package com.infoland.modules.maintenance.model;

import java.util.List;

import com.alibaba.fastjson.JSONArray;
import com.infoland.modules.maintenance.model.base.BaseDict;
import com.jfinal.kit.Kv;
import com.jfinal.kit.StrKit;
import com.jfinal.plugin.activerecord.Db;
import com.jfinal.plugin.activerecord.Page;
import com.jfinal.plugin.activerecord.SqlPara;

@SuppressWarnings("serial")
public class Dict extends BaseDict<Dict> {
	public static final Dict dao = new Dict();

	/**
	 * 分页显示字典数据列表
	 * @param pageNumber   页码
	 * @param pageSize     每页最大行数
	 * @param typeValue    查询条件
	 * @return             返回分页显示的数据
	 */
	public Page<Dict> findPageList(Integer pageNumber, Integer pageSize,String typeValue){
		// select请求头
		String sql = getSql("dict.dictSelect");
		// 创建集合存放对象
		Kv param = Kv.create();
		// 判断是否为空  放入对象中
		if (StrKit.notBlank(typeValue)) {
			param.set("typeValue", typeValue);
		}
		SqlPara sqlExceptSelect = getSqlPara("dict.dictFrom", param);
		return Dict.dao.paginate(pageNumber, pageSize, sql, sqlExceptSelect.getSql(),sqlExceptSelect.getPara());
	}
	
	/**
	 * 删除数据(可批量)
	 * @author lixp
	 * @param array 需要删除的数据id数组
	 * @return      返回删除成功的条数
	 */
	public int[] deleteIds(JSONArray array){
		// 获取删除sql语句
		String sql = getSql("dict.dictDelete");
		// 将array赋值给二维数组
		Object[][] param = new Object[array.size()][1];
		for(int i=0;i<param.length;i++){
			for(int j=0;j<1;j++){
				param[i][j] = array.get(i);
			}
		}
		// 返回删除成功的条数
		return Db.batch(sql, param,array.size());
	}
	
	/**
	 * 根据条件查询下拉选内容
	 * @param query        需要查询的条件
	 * @param init         字典列表初始下拉选
	 * @param days         月份最大天数
	 * @return             返回需要的数据集合
	 */
	public List<Dict> queryList(String query,String init,Integer days){
		Kv param = Kv.create();
		// 如果月份不为空，将query变为day,从数据库中查询day
		if(days != null){
			query = "day";
			param.set("days", days);
		}
		// 根据条件查询
		if(StrKit.notBlank(query)){
			param.set("query",query);
		}
		// 初始查询字典列表下拉选
		if(StrKit.notBlank(init)){
			param.set("init", init);
		}
		SqlPara select = getSqlPara("dict.dictSelectQuery",param);
		return find(select.getSql(),select.getPara());
	}
}
